﻿using System;
using System.Collections;
using System.Text;
using System.Windows.Forms;

namespace Formation_Entreprise
{
    public partial class frmFormation : Form
    {
        objFormation formation;

        public frmFormation()
        {
            InitializeComponent();
        }

        public frmFormation(int tabNum)
        {
            InitializeComponent();
            // Index count 0
            tcFormation.SelectedIndex = tabNum - 1;
        }

        private bool formationErrorControl()
        {
            for (int i = 0; i < txtAjouter_Formation.Text.Length; i++)
            {
                if (char.IsDigit(txtAjouter_Formation.Text, i))
                {
                    MessageBox.Show("Le nom de la formation ne doit contenir que des Lettres.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return true;
                }
            }

            foreach (string s in formation.getNomFormation())
            {
                if (s == txtAjouter_Formation.Text)
                {
                    MessageBox.Show("Le nom de la formation est déjà choisit.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return true;
                }
            }
            
            for (int i = 0; i < txtAjouter_Langue.Text.Length; i++)
            {
                if (char.IsDigit(txtAjouter_Langue.Text, i))
                {
                    MessageBox.Show("La langue de la formation ne doit contenir que des Lettres.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return true;
                }
            }

            for (int i = 0; i < txtAjouter_Heure.Text.Length; i++)
            {
                if (char.IsLetter(txtAjouter_Heure.Text, i))
                {
                    MessageBox.Show("Le nombre d'heure ne doit contenir que des chiffres.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return true;
                }
            }

            for (int i = 0; i < txtAjouter_Prix.Text.Length; i++)
            {
                if (char.IsLetter(txtAjouter_Prix.Text, i))
                {
                    MessageBox.Show("Le prix ne doit contenir que des chiffres.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return true;
                }
            }

            if (!formation.getModify_NomFormateur().Contains(cboAjouter_Formateur.Text)) {
                MessageBox.Show("Le nom du formateur n'est pas valide.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return true;
            }

            return false;
        }

        private void frmFormation_Load(object sender, EventArgs e)
        {
            formation = new objFormation();
            txtFacturer_Date.Text = DateTime.Now.ToString("dd/MM/yyyy");
            txtFacturer_Date.Enabled = false;

            //Controlle pour onglet Ajouter
            cboAjouter_Formateur.Items.Clear();

            foreach (string i in formation.getInsert_NomFormateur())
            {
                cboAjouter_Formateur.Items.Add(i);
            }

            //Controlle pour onglet Modifier
            cboModifier_Formation.Items.Clear();

            foreach (string i in formation.getNomFormation())
            {
                cboModifier_Formation.Items.Add(i);
            }


            //Controlle pour onglet Gestion Formation
            cboInserer_Formation.Items.Clear();
            cboInserer_Cours.Items.Clear();

            foreach (string i in formation.getNomFormation())
            {
                cboInserer_Formation.Items.Add(i);
            }
            foreach (string i in formation.getNomCours())
            {
                cboInserer_Cours.Items.Add(i);
            }


            //Controlle pour onglet Facturation
            cboFacturer_Entreprise.Items.Clear();
            cboFacturer_Conseiller.Items.Clear();

            foreach (string i in formation.getEntreprise())
            {
                cboFacturer_Entreprise.Items.Add(i);
            }
            foreach (string i in formation.getConseiller())
            {
                cboFacturer_Conseiller.Items.Add(i);
            }
            chkFacturer.Enabled = false;

            //Controlle pour onglet Gestion Entreprise
            cboInsererFormation_Entreprise.Items.Clear();
            cboInsererFormation_Formation.Items.Clear();

            foreach (string i in formation.getEntreprise())
            {
                cboInsererFormation_Entreprise.Items.Add(i);
            }
            foreach (string i in formation.getNomFormation())
            {
                cboInsererFormation_Formation.Items.Add(i);
            }

        }

        private void tcFormation_TabIndexChanged(object sender, EventArgs e)
        {
            //Suppression des champ de texte sur le changement de l'onglet
            txtAjouter_Decsription.Text = null;
            txtAjouter_Formation.Text = null;
            txtAjouter_Heure.Text = null;
            txtAjouter_Langue.Text = null;
            txtAjouter_Prix.Text = null;

            txtFacturer_MtnFormation.Text = null;
            txtFacturer_MtnTotal.Text = null;

            txtModifier_Description.Text = null;
            txtModifier_Heure.Text = null;
            txtModifier_Langue.Text = null;
            txtModifier_Prix.Text = null;

            cboAjouter_Formateur.Text = null;

            cboFacturer_Entreprise.Text = null;
            cboFacturer_Formation.Text = null;

            cboInserer_Cours.Text = null;
            cboInserer_Formation.Text = null;

            cboInsererFormation_Entreprise.Text = null;
            cboInsererFormation_Formation.Text = null;

            cboModifier_Formateur.Text = null;
            cboModifier_Formation.Text = null;

            //Rafraichissement des ComboBox
            frmFormation_Load(sender, e);

        }


        private void cboModifier_Formation_SelectedValueChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(cboModifier_Formation.Text))
            {
                cboModifier_Formateur.Items.Clear();

                txtModifier_Langue.Text = formation.getSelectFormation(cboModifier_Formation.Text)[1].ToString();
                txtModifier_Heure.Text = formation.getSelectFormation(cboModifier_Formation.Text)[0].ToString();
                txtModifier_Description.Text = formation.getSelectFormation(cboModifier_Formation.Text)[2].ToString();
                txtModifier_Prix.Text = string.Format("{0:C}", formation.getSelectFormation(cboModifier_Formation.Text)[3].ToString());

                foreach (string i in formation.getModify_NomFormateur())
                {
                    cboModifier_Formateur.Items.Add(i);
                }

                cboModifier_Formateur.SelectedItem = formation.getSelectFormation(cboModifier_Formation.Text)[4];
            }
        }

        private void cboInserer_Formation_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstCours.Items.Clear();

            foreach (string i in formation.getListCours(cboInserer_Formation.Text))
            {
                lstCours.Items.Add(i);
            }
        }

        private void cboFacturer_Entreprise_SelectedValueChanged(object sender, EventArgs e)
        {
            cboFacturer_Formation.Items.Clear();
            txtFacturer_MtnTotal.Text = null;
            txtFacturer_MtnFormation.Text = null;
            cboFacturer_Formation.Text = null;
            chkFacturer.Checked = false;

            foreach (string i in formation.getEntrepriseFormation(cboFacturer_Entreprise.Text))
            {
                cboFacturer_Formation.Items.Add(i);
            }

            cboFacturer_Conseiller.SelectedItem = formation.getNomConseiller(cboFacturer_Entreprise.Text);
            txtFacturer_MtnTotal.Text = string.Format("{0:C}", formation.getMontantTotal(cboFacturer_Entreprise.Text));
        }

        private void cboFacturer_Formation_SelectedValueChanged(object sender, EventArgs e)
        {
            txtFacturer_MtnFormation.Text = string.Format("{0:C}", formation.getMontantFormation(cboFacturer_Formation.Text).ToString());
            chkFacturer.Checked = formation.getFactureFormation(cboFacturer_Formation.Text, cboFacturer_Entreprise.Text);
        }

        private void cboInsererFormation_Entreprise_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstFormation.Items.Clear();

            foreach (string i in formation.getListFormation(cboInsererFormation_Entreprise.Text))
            {
                lstFormation.Items.Add(i);
            }
        }


        private void btnAjouter_Click(object sender, EventArgs e)
        {


            if (string.IsNullOrEmpty(txtAjouter_Decsription.Text) || string.IsNullOrEmpty(txtAjouter_Heure.Text) || string.IsNullOrEmpty(txtAjouter_Langue.Text) || string.IsNullOrEmpty(txtAjouter_Prix.Text) || string.IsNullOrEmpty(cboAjouter_Formateur.Text) || string.IsNullOrEmpty(txtAjouter_Formation.Text))
            {
                MessageBox.Show("Un champ ne peut pas être vide\npour continuer l'ajout.", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (!formationErrorControl())
            {
                formation.setInsertFormation(txtAjouter_Formation.Text, txtAjouter_Heure.Text, txtAjouter_Langue.Text, txtAjouter_Decsription.Text, txtAjouter_Prix.Text, cboAjouter_Formateur.Text);
            }
        }

        private void btnInserer_Insert_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(cboInserer_Cours.Text) || string.IsNullOrEmpty(cboInserer_Formation.Text))
            {
                MessageBox.Show("Il faut choir un Formation et un Cours", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                formation.setInsertFormationCours(cboInserer_Cours.Text, cboInserer_Formation.Text);
                cboInserer_Formation_SelectedIndexChanged(sender, e);
            }
        }

        private void btnInserer_Delete_Click(object sender, EventArgs e)
        {
            if (lstCours.SelectedItem != null)
            {
                formation.setDeleteFormationCours(lstCours.SelectedItem.ToString(), cboInserer_Formation.Text);
                cboInserer_Formation_SelectedIndexChanged(sender, e);
            }
            else
            {
                MessageBox.Show("Un objet de la liste doit être\nsélectionner pour continuer\nla supression.", "Erreur Suppression", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnModifier_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtModifier_Langue.Text) || string.IsNullOrEmpty(txtModifier_Heure.Text) || string.IsNullOrEmpty(txtModifier_Description.Text) || string.IsNullOrEmpty(txtModifier_Prix.Text) || string.IsNullOrEmpty(cboModifier_Formateur.Text) || string.IsNullOrEmpty(cboModifier_Formation.Text))
            {
                MessageBox.Show("Un champ ne peut pas être vide pour la modification", "Erreur Modification", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                formation.setUpdateFormation(cboModifier_Formation.Text, txtModifier_Heure.Text, txtModifier_Langue.Text, txtModifier_Description.Text, txtModifier_Prix.Text, cboModifier_Formateur.Text);
                MessageBox.Show("La formation est modifiée avec succès.");
            }
        }

        private void btnFacturer_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(cboFacturer_Entreprise.Text) || string.IsNullOrEmpty(cboFacturer_Formation.Text))
            {
                MessageBox.Show("Aucun champ vide n'est accepter", "Erreur Facturation", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (!chkFacturer.Checked)
            {
                formation.setInsertFacture(txtFacturer_MtnFormation.Text, cboFacturer_Formation.Text, cboFacturer_Conseiller.Text);
                formation.setInsertEntrepriseFactureOffre(cboFacturer_Formation.Text, cboFacturer_Entreprise.Text);
                MessageBox.Show("La facture à été créée avec succès.");
                cboFacturer_Formation_SelectedValueChanged(sender, e);
                frmFormation_Load(sender, e);
            }
            else
            {
                MessageBox.Show("L'entreprise a déjà été facturé pour la formation " + cboFacturer_Formation.Text, "Erreur Facturation", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnInsererFormation_Insert_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(cboInsererFormation_Entreprise.Text) || string.IsNullOrEmpty(cboInsererFormation_Formation.Text))
            {
                MessageBox.Show("Il faut choir un Entreprise et une Formation", "Erreur Ajout", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                formation.setInsertEntrepriseFormation(cboInsererFormation_Entreprise.Text, cboInsererFormation_Formation.Text);
                cboInsererFormation_Entreprise_SelectedIndexChanged(sender, e);
            }
        }

        private void btnInsererFormation_Delete_Click(object sender, EventArgs e)
        {
            if (lstFormation.SelectedItem != null)
            {
                formation.setDeleteEntrepriseFormation(lstFormation.SelectedItem.ToString(), cboInsererFormation_Entreprise.Text);
                cboInsererFormation_Entreprise_SelectedIndexChanged(sender, e);
            }
            else
            {
                MessageBox.Show("Un objet de la liste doit être\nsélectionner pour continuer\nla supression.", "Erreur Suppression", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnModifier_Annuler_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Êtes vous sur d'annuler l'opération?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                cboModifier_Formation_SelectedValueChanged(sender, e);
            }
        }

    }
}